240 F = 3: ON (D = 1) GOTO 245: ON INT( RND(1) *2) GOTO 245: FOR X = 20 TO 1 STEP -1: GOTO 250
245 FOR X = 1 TO 20
250 GOSUB 100: DRAW 11 AT OX(X),OY(X): GOSUB 110: DRAW 11 AT OX(X),OY(X): GOSUB 300: NEXT
260 F = 2: ON (D = 1) GOTO 265: ON INT( RND(1) *2) GOTO 265: FOR X = 20 TO 1 STEP -1: GOTO 270
265 FOR X = 1 TO 20
270 GOSUB 110: DRAW 11 AT IX(X),IY(X): GOSUB 100: DRAW 11 AT IX(X),IY(X): GOSUB 300: NEXT :X = 0
280 F = 1: HCOLOR= 0: DRAW 11 AT 140,79: FOR I = 1 TO SP: NEXT I: HCOLOR= 3: DRAW 11 AT 140,79: GOSUB 300: GOTO 240
300 IF PEEK( -16287 +PL -1) >127 THEN HCOLOR= 5: ON F GOSUB 310,315,320:T = T +1: ON G GOSUB 350,400
305 RETURN
310 DRAW 12 AT 140,79: RETURN
315 DRAW 12 AT IX(X),IY(X): RETURN
320 DRAW 12 AT OX(X),OY(X): RETURN
350 REM GAME 1 (SCORE 1-20)
355 IF C(X) = PS(PL) +1 THEN PS(PL) = C(X)
360 IF PS(PL) = 20 AND F = 1 THEN HCOLOR= 3: GOSUB 310: GOTO 600
370 GOTO 610
400 REM GAME 2 (SCORE 500)
405 IF F = 3 AND (X/2 = INT(X/2)) THEN PS(PL) = PS(PL) -C(X): GOTO 610
410 IF F = 2 AND (X/2 < > INT(X/2)) THEN PS(PL) = PS(PL) -C(X): GOTO 610
415 IF F = 1 THEN PS(PL) = PS(PL) +50: GOTO 430
420 PS(PL) = PS(PL) +C(X)
430 IF PS(PL) > = 500 THEN GOSUB 620: GOTO 600
440 GOTO 610
600 HOME : VTAB 22: HTAB 10: FLASH : PRINT " PLAYER "PL" WINS !!! ": NORMAL : POP : POP : FOR X = 1 TO 1000: NEXT X: HOME : VTAB 21: PRINT "WANT ANOTHER GAME ?";: GET A$: PRINT : IF A$ = "Y" THEN 16000
605 TEXT : HOME : PRINT CHR$(4)"CATALOG": END
610 FOR Y = 1 TO 100: NEXT Y: ON (G = 2) GOTO 612: ON (T <3) GOTO 615:T = 0
612 PL = PL +1: IF PL = 3 THEN PL = 1
615 VTAB 21: PRINT "PLAYER 1 SCORE="PS(1)" PLAYER 2 SCORE="PS(2)" ": VTAB 23: FOR Y = 1 TO PL: POKE 768,100 *PL: POKE 769,50: CALL 770: NEXT Y: PRINT TAB( 4)"PLAYER "PL"'S TURN --- THROW DART "T +1
620 ON (F -1) GOSUB 100,110: ON (F -1) GOTO 315,320: HCOLOR= 3: GOTO 310
1000 INC = 1:X = 0
1005 IF X >58 THEN INC = .50
1010 IF X >71 THEN INC = .10
1015 IF X >78.11 THEN INC = .03
1020 X = X +INC: IF X >79 THEN 1040
1025 Y = SQR(6241 -X ^2)
1030 IF X < = 24 OR (X > = 46 AND X < = 63.2) OR X > = 75 THEN GOSUB 200: GOSUB 230: GOTO 1005
1035 IF (X >24 AND X <46) OR (X > = 63.2 AND X <75) THEN GOSUB 210: GOSUB 220: GOTO 1005
1040 INC = 1:X = 0
1045 IF X >33 THEN INC = .50
1050 IF X >40.5 THEN INC = .10
1055 IF X >44.5 THEN INC = .03
1060 X = X +INC: IF X >45 THEN 1080
1065 Y = SQR(2025 -X ^2)
1070 IF X < = 13.5 OR (X > = 26 AND X < = 36) OR X >42.75 THEN HCOLOR= 3: GOSUB 210: HCOLOR= 0: GOSUB 200: GOTO 1045
1075 IF (X >13.5 AND X <26) OR (X >36 AND X <42.75) THEN HCOLOR= 3: GOSUB 200: HCOLOR= 0: GOSUB 210: GOTO 1045
1100 Y = SQR(36 -X ^2): GOSUB 200: GOSUB 210: NEXT X: GOTO 1145
1145 FOR A = 1 TO 20: READ XC,YC,C: GOSUB 1200: GOSUB 1210: NEXT A: GOTO 1230
1200 HCOLOR= C: SCALE= 1: FOR X = 0 TO 48 STEP 16: ROT= X: DRAW 13 AT XC,YC: NEXT X: RETURN
1210 IF C = 0 THEN C = 3: GOTO 1220
1215 C = 0
1220 HCOLOR= C: SCALE= 1: ROT= 0:N$ = STR$(A): IF LEN(N$) = 1 THEN DRAW VAL(N$) +1 AT XC,YC: RETURN
1225 DRAW VAL( LEFT$(N$,1)) +1 AT XC -4,YC: DRAW VAL( RIGHT$(N$,1)) +1 AT XC +3,YC: RETURN
1230 FOR X = 1 TO 20: READ OX(X),OY(X): NEXT X: FOR X = 1 TO 20: READ IX(X),IY(X): NEXT X: FOR X = 1 TO 20: READ C(X): NEXT X: FOR X = 770 TO 790: READ Y: POKE X,Y: NEXT X
1235 VTAB 21: PRINT "PLAYER 1 SCORE="PS(1)" PLAYER 2 SCORE="PS(2)" ": VTAB 23: FOR Y = 1 TO PL: POKE 768,100 *PL: POKE 769,50: CALL 770: NEXT Y: PRINT TAB( 4)"PLAYER "PL"'S TURN --- THROW DART "T +1
10039 REM NUMBER COORDINATES AND CIRCLE COLORS XC,YC,C
10040 DATA 171,18,0,171,141,3,129,147,3,201,48,0,129,11,0,207,90,0,92,128,3,72,88,3,93,30,0,201,110,3,72,67,0,110,18,3,207,69,3,79,47,3,188,129,0,79,110,0,151,147,0,188,30,3,110,141,0,151,11,3
10049 REM OUTER TRACK COORDINATES OX(X),OY(X)
10050 DATA 130,26,117,31,104,41,93,54,88,70,89,86,94,102,103,116,116,127,131,132,150,132,165,127,178,116,185,102,190,87,191,70,186,55,177,41,164,31,149,26
10054 REM INNER TRACK COORDINATES IX(X),IY(X)
10055 DATA 135,40,124,43,113,50,106,61,103,73,104,85,107,96,114,107,123,114,136,117,147,117,156,114,167,107,174,97,177,85,176,72,173,60,166,50,157,43,146,40
10059 REM COUNTERCLOCKWISE BOARD ORDER C(X)
10060 DATA 5,12,9,14,11,8,16,7,19,3,17,2,15,10,6,13,4,18,1,20
10069 REM SOUND DATA
10070 DATA 173,48,192,136,208,5,206,1,3,240,9,202,208,245,174,0,3,76,2,3,96
15010 PRINT TAB( 10)"WANT INSTRUCTIONS ?";: GET A$: PRINT : PRINT : PRINT : IF A$ = "N" THEN 16000
15020 HOME : VTAB 6: PRINT "TO PLAY DARTS EACH PLAYER USES A GAME": PRINT : PRINT "PADDLE, PLAYER 1 USES PDL(0) AND PLAYER": PRINT : PRINT "2 USES PDL(1). SIMPLY PRESS YOUR GAME": PRINT : PRINT "BUTTON WHEN THE FLASHING SQUARE IS ON": PRINT : PRINT "THE SPOT YOU WANT."
15030 PRINT : PRINT "HIT ANY KEY TO CONTINUE>";: GET A$: HOME : INVERSE : PRINT " GAME 1 ": NORMAL : PRINT : PRINT "TO WIN YOU MUST HIT EACH NUMBER (1-20)": PRINT : PRINT "IN ORDER, AND THEN YOU MUST HIT THE": PRINT : PRINT "BULLS EYE.": PRINT
15040 INVERSE : PRINT " GAME 2 ": NORMAL : PRINT : PRINT "THE FIRST PLAYER TO GET 500": PRINT : PRINT "POINTS WINS. EACH HIT IS WORTH THE": PRINT : PRINT "SECTION VALUE. A BULLS EYE IS WORTH 50": PRINT : PRINT "POINTS. TO MAKE THINGS INTERESTING,": PRINT
15050 PRINT "ANY BLACK SQUARE YOU HIT WILL": PRINT : PRINT "BE DEDUCTED FROM YOUR SCORE.": PRINT : PRINT
16000 INPUT "WHICH GAME (1 OR 2) ";G: ON (G <1 OR G >2) GOTO 16000: PRINT : INPUT "DIFFICULTY (1=EASY, 2=HARD) ";D: INPUT "ENTER SPEED OF PLAY (1=FAST, 255=SLOW) ";SP: HOME : IF F >0 THEN PL = 1:PS(1) = 0:PS(2) = 0:T = 0:GOT